#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name：    return_time.py.py
   Author :       zyq
   CreateDate：   2024/7/18 16:21
   Remark :  返回年月日的工具类，方便在自动化日期控件时的运用
-------------------------------------------------
"""

import datetime
import time
from datetime import timedelta


class ReturnTime:
    @staticmethod
    def get_this_year() -> int:
        """
        :return: 返回今年的年份
        """
        return datetime.datetime.now().year

    @staticmethod
    def get_current_month() -> int:
        """
        :return: 返回当前的月份
        """
        return datetime.datetime.now().month

    @staticmethod
    def get_today() -> int:
        """
        :return: 返回当前日期
        """
        return datetime.datetime.now().day

    @staticmethod
    def get_hour() -> int:
        """

        :return: 返回当前的小时数
        """
        return datetime.datetime.now().hour

    @staticmethod
    def get_time():
        """
        :return: 获取当前的的年月日
        """
        return time.strftime('%Y%m%d', time.localtime(time.time()))

    @staticmethod
    def get_Timestamp():
        """
        :return: 获取当前时间戳
        """
        return time.time()

    @staticmethod
    def get_now_time():
        """
        :return: 当前时间
        """
        now = time.strftime('%Y-%m-%d %H:%M', time.localtime(time.time()))
        return now

    @staticmethod
    def time_cal(mode: str, num: int = 0, time_delta=None) -> str:
        """
        :return: 返回当前时间 + n天
        "%Y-%m-%d %H:%M"
        """
        """
        计算当前时间加上指定的天数、小时数或分钟数后的时间，并返回格式化后的字符串。

        Args:
            mode (str): 时间格式字符串，如"%Y-%m-%d %H:%M"。
            num (int): 指定的天数、小时数或分钟数。
            time_delta (Union[None, str], optional): 时间单位，可为'day'（默认）、'hour'或'min'。如果为None，则默认为天数。默认为None。

        Returns:
            str: 格式化后的时间字符串，符合指定的mode格式。

        Raises:
            Exception: 当time_delta参数不是'day'、'hour'、'min'或None时，抛出异常。
        """
        if time_delta is None:
            res = datetime.datetime.now() + timedelta(days=num)
            return res.strftime(mode)
        elif time_delta == 'hour':
            res = datetime.datetime.now() + timedelta(hours=num)
            return res.strftime(mode)
        elif time_delta == 'min':
            res = datetime.datetime.now() + timedelta(minutes=num)
            return res.strftime(mode)
        else:
            raise "time_delta参数异常！"


get_time = ReturnTime()

if __name__ == '__main__':
    print(ReturnTime.time_cal(mode="%Y-%m-%d", num=0))
